With the expanding availability of higher powered computers to the average consumer, graphic images are becoming an increasingly prevalent component of the computer user experience. Consequently, it has become desirable for many users to be able to manipulate graphic images appearing on a computer display, for various purposes. For example, a teacher may desire to create a sequence of images to facilitate students' understanding of a particular concept. As another example, animations and other manipulations of graphic images might be used to enhance a business presentation, or convey a particular idea in a newsletter.
In the past, the manipulation of an image typically required the skills of a person having a substantial amount of experience with computer graphics. Although various types of graphics programs were available to the average user, these programs were not well suited to the easy manipulation of images, particularly for the creation of animations in which multiple graphic images smoothly flow from one state to another. For example, one type of widely used graphics program is known as a "paint" program. In this type of program, the graphic images are bitmap-based. In other words, each pixel in an image is defined by a numerical value. Manipulation of an image with one of these programs requires the user to redraw the portions of the image that change from one view to the next, without the full benefit of the effort that went into the creation of the first image. It can be readily appreciated that a procedure of this type is beyond the artistic abilities of the average user.
To facilitate work with graphic images, many programs employ various types of constraints. One widely-used type of program in this category is object-oriented graphics programs which are exemplified by various types of drawing programs. In these programs, graphic images are created with the use of primitives such as lines, rectangles and splines. Each primitive has two or more control points which the user can position as desired to create the image. For example, a line is defined by two control points at its respective ends. To move the line within the image, the user merely varies the position of one or both of its control points. Thus, rather than having to manipulate each pixel in the image, the user can work with a much smaller set of features to change the image from one frame to another. Even so, however, a substantial amount of effort is still required to modify images, particularly if they are complex, because each primitive must be individually positioned by the user. As a result, these programs are often not well suited for the creation of animations, or similar operations which require an appreciable number of changes in the images.
Another type of graphic program utilizes explicit geometric constraints to decrease the amount of effort required to change an image. One example of a constraint-based graphics system is disclosed in U.S. Pat. No. 5,390,294. In systems of this type, certain constraints can be explicitly defined by the user. For example, an end point of a line can be attached to a box or other object in an image, or two lines can be defined as being parallel. When one of the elements is moved, the other elements automatically follow it to maintain the relationship defined by the constraint. As a result, less effort is required on the part of the user to manipulate various components of an image. Again, however, the user is working with individual components, rather than the image as a whole. Moreover, the types of constraints available in such a system are ill-suited for animations outside the field of computer-aided mechanical design. Consequently, such a system may still prove to have insufficient capabilities and be too tedious to use for the average user, particularly in the case of an animation that consists of a substantial number of frames.
Other, more sophisticated constraint-based graphic systems have been developed for the purposes of creating animations or the like. Examples of such include programs which employ explicit algebraic constraints. Although these types of programs represent much more powerful tools for manipulating images, they also require a much higher level of skill. In addition, the approaches which they employ for the manipulation of images are not intuitive. As a result, they are not well suited for the average user of personal computers, who has neither the time nor experience necessary to create a pleasing end product with such systems.
One type of constraint-based graphic system utilizes inverse kinematics. Although such systems generally approach the ease of use sought in the development of the present invention, their application is limited to articulated figures, i.e., characters that can be modeled as collections of rigid rods connected by joints. Consequently, they do not meet the needs of the average user of a personal computer, which generally do not involve articulated figures.
A system which is particularly designed for the generation of an animation sequence by an average user of a personal computer is disclosed in U.S. Pat. No. 5,416,899. In this system, a set of two-dimensional views provide sparse data from which intermediate images can be generated by multi-target interpolation. The manipulation of complete views to define animation sequences, as opposed to individual primitives, presents an easier-to-use paradigm for the person creating the animation. Even in this case, however, the flexibility provided to the user is limited, due to the homogeneous dimensionality of the state space within which the views are defined. In addition, the user is required to manipulate independent parameters of the views. Such an approach is inherently non-intuitive, and therefore requires a certain amount of skill on the part of the user.
Other known techniques enable the user to directly manipulate the graphical images, and thereby provide a more intuitive approach. One such technique is described in a Ph.D. thesis by Michael Gleicher, "A Differential Approach To Graphical Interaction", CMU-CS-94-217, CMU School of Computer Science, 1994. In essence, the technique utilizes a Jacobian matrix to determine the relationships which graphical objects should occupy to conform to a given set of controls defined by the user. The Jacobian matrix varies arbitrarily with state, and therefore must be recomputed for each change of state. Hence, the resulting technique is computationally expensive and not particularly efficient. In addition, the types of relationships supported by such a system are only useful in a limited set of circumstances.
In addition to specific systems and programs, various software languages have also been developed for graphics and animation. Examples of such include Java, Condor and Inventor/VRML. Each of these languages supports the ability to produce constrained graphics, and possibly also direct manipulation of images. However, since they are languages, rather than end-user products, they require a high degree of skill, and are therefore not suited for the average user.
It is desirable, therefore, to provide a system which readily enables a computer user to manipulate a graphic image, for example to produce an animation or the like, in an intuitive and flexible manner without requiring a high skill level or significant amount of effort on the part of the end user.